#pragma once
#include <vulkan/vulkan.h>
#include <vector>
#include <set>
#include "VKValidLayersAndExts.h"
#include "SDL/SDL.h"
class VKDevice
{
public:
	void CreateLogicalDevice(VkSurfaceKHR surface,VKValidLayersAndExts* valLayersAndExt,bool isValidationLayersEnabled);
	void DestroyDevice();

	void FindPhysicalDevice(VkInstance instance, VkSurfaceKHR surface);

	VkPhysicalDevice m_PhysicalDevice;
	VkDevice m_LogicDevice;

	VkQueue m_GraphicsQueue;
	int m_GraphicsQueueFamilyIndex;

	VkQueue m_PresentQueue;
	int m_PresentQueueFamilyIndex;

	VkSurfaceCapabilitiesKHR m_SwapChainSurfaceCapabilities;
	std::vector<VkSurfaceFormatKHR> m_SwapChainSurfaceFormats;
	std::vector<VkPresentModeKHR> m_SwapChainPresentModes;
};

